package com.itheima.dao;

import com.itheima.pojo.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UserMapper {
    //查询所有用户,返回一个list集合
    /**
     * 功能: 查询所有字段isdelete=0的用户
     *      返回一个list集合
     * */
    @Select("select id,name,sex,age,address,qq,email,isdelete from t_user where isdelete=0")
    List<User> findAllUsers();

    //完成新增用户功能
    //在查询用户的基础上添加用户
    /**
     * 功能: 根据id查询用户
     *      返回一个user对象
     * */
    @Select("select id,name,sex,age,address,qq,email,isdelete from t_user where name=#{name}")
    User findUserByName(String name);

    //添加用户
    /**
     * 功能: 根据用户信息添加用户
     *      返回影响对的行数
     * */
    @Insert("insert into t_user (name,sex,age,address,qq,email) values (#{name},#{sex},#{age},#{address},#{qq},#{email})")
    int addUser(User user);

    //删除用户信息
    /**
     * 功能: 先根据id查询用户信息
     *      将字段isdelete为1的用户在表格中删除
     *      实际在数据表中并没有删除,只是将字段从0修改为1
     *      并没有实现物理删除,实则为逻辑删除
     * */
    @Update("update t_user set isdelete = 1 where id=#{id}")
    int updateToDeleteUserById(Integer id);
//    @Delete("delete from t_user where id=#{id}")
//    int deleteUser(Integer id);


    //修改用户
    //要先展示用户信息
    /**
     * 功能: 修改用户信息
     *
     *      将想要修改的用户信息回显到update.jsp页面
     *      根据用户的id修改数据,最后展示在list.jsp页面中
     * */
    @Select("select id,name,sex,age,address,qq,email from t_user where id=#{id}")
    User findUserById(Integer id);

    //修改信息
    @Update("update t_user set name=#{name},sex=#{sex},age=#{age},address=#{address} where id=#{id}")
    int updateUser(User user);


    /**
     * 功能: 分页查询
     *      查询总记录数
     * */
    @Select("select count(*) from t_user")
    int findTotalCount();

    /**
     * 功能: 分页查询
     *      查询一个list集合,也就是每页的用户信息
     * */
    @Select("select id,name,sex,age,address,qq,email from t_user limit #{start},#{rows}")
    List<User> findPage(@Param("start") int start,@Param("rows") int rows);
}
